/**
 * 管理员身份的路由
 * @type {createApplication}
 */
const express = require('express');
const bodyParser = require('body-parser');

//获取中间件和工具类
const userMid = require('../middleware/userMid')
const rootCategoryMid = require('../middleware/rootCategoryMid')
const messageMid = require('../middleware/messageMid')
const utils = require('../common/utils')

const adminAPP = express(); // 管理员子应用

/**配置post*/
adminAPP.use(bodyParser.urlencoded({ extended: false }));//解析post请求数据
adminAPP.use(bodyParser.json());//数据JSON类型
/**配置post*/


/**
 * 获取用户列表<通过特定的筛选条件>
 */
adminAPP.post('/list-user' , userMid.gUserCount  , (request ,response ,next) => { //先获取总记录条数，以计算下面的必要参数

  let { userCount } = request;

  let size = 6;   // 每页显示6条

  request.page = {};  // 创建一个空对象page
  request.page.count = userCount.count;   //总记录数
  request.page.total = Math.ceil(request.page.count / size); //页数,通过取天花板整数得到
  let {i} = request.body; // 获取当前要展示的页面页数
  console.log('当前要展示的页' + i);
  request.page.index = i ? i : 1;   //当前要展示的页面参数,通过url传入,如果有这个参数，就取，没有则为1
  request.page.index = request.page.index > request.page.total ? request.page.total : request.page.index;    //当前要展示的页面,如果这个参数大于页面页数,就取页面页数;否则，就取参数
  request.page.index = request.page.index < 1 ? 1 : request.page.index;    //当前要展示的页面,如果这个参数小于1，则取1;否则，就取当前参数

  response.start = (request.page.index - 1) * size;   //获取从哪个记录条数开始，(当前页-1)*size
  response.size = size;   //获取查询几条记录，即每页记录数

  next();

} , [ userMid.gUserRowCountRecord] , (request, response) => {   //这时起始记录数，每页记录数都已经有了，再调用getRecomPage方法即可
  //取到上面的page以及gUserRowCountRecord中间件的指定用户记录信息
  let {recordCountUser , page} = request;

  let {sex, business, username_or_name} = request.body;  // 获取前台发来的的条件词，用于将此再次赋给前台以进行特定的渲染

  page.list = recordCountUser;
  let res ={
    page,
    sex,
    business,
    username_or_name
  };
  response.status(200).send(res);
})


/**
 * 删除用户触发
 */
adminAPP.post('/delete-user', userMid.dUser, (request, response, next) => {
  if (request.affectR) {
    let res = {
      'code': 200,
      'msg': '删除用户成功'
    };
    response.status(200).send(res);
  } else {
    let res = {
      'code': 500,
      'msg': '删除用户失败！'
    };
    response.status(500).send(res);
  }
})

/**
 * 增加root类目
 */
adminAPP.post('/add-root_category', rootCategoryMid.sRootCategory, (request, response, next) => {
  if (request.add_rcid) {
    let res = {
      'code': 200,
      'msg': '添加root类目成功'
    }
    response.status(200).send(res);
  } else {
    let res ={
      'code': 500,
      'msg': '添加root类目失败！'
    }
    response.status(500).send(res)
  }
})

/**
 * 删除root主类目
 */
adminAPP.post('/delete-root_category', rootCategoryMid.dRootCategory, (request, response, next) => {
  if (request.affectR) {
    let res = {
      'code': 200,
      'msg': '删除成功'
    }
    response.status(200).send(res)
  } else {
    let res = {
      'code': 500,
      'msg': '删除失败！'
    }
    response.status(500).send(res)
  }
})

/**
 * 更新主类目的网络请求
 */
adminAPP.post('/update-root_category', rootCategoryMid.uRootCategory, (request, response, next) => {
  if (request.affectR) {
    let res = {
      'code': 200,
      'msg': '修改主类目成功'
    }
    response.status(200).send(res)
  } else {
    let res = {
      'code': 500,
      'msg': '修改主类目失败'
    }
    response.status(500).send(res)
  }
})


/**
 * 获取消息列表
 */
adminAPP.post('/list-message' , messageMid.gMessageCount , (request ,response ,next) => { //先获取总记录条数，以计算下面的必要参数

  let { messageCount } = request;

  let size = 6;   // 每页显示6条

  request.page = {};  // 创建一个空对象page
  request.page.count = messageCount.count;   //总记录数
  request.page.total = Math.ceil(request.page.count / size); //页数,通过取天花板整数得到
  let {i} = request.body; // 获取当前要展示的页面页数
  console.log('当前要展示的页' + i);
  request.page.index = i ? i : 1;   //当前要展示的页面参数,通过url传入,如果有这个参数，就取，没有则为1
  request.page.index = request.page.index > request.page.total ? request.page.total : request.page.index;    //当前要展示的页面,如果这个参数大于页面页数,就取页面页数;否则，就取参数
  request.page.index = request.page.index < 1 ? 1 : request.page.index;    //当前要展示的页面,如果这个参数小于1，则取1;否则，就取当前参数

  response.start = (request.page.index - 1) * size;   //获取从哪个记录条数开始，(当前页-1)*size
  response.size = size;   //获取查询几条记录，即每页记录数

  next();

} , [ messageMid.gMessage] , (request, response) => {   // 这是起始记录数，每页记录数都已经有了，再调用getRecomPage方法即可
  //取到上面的page以及gUserRowCountRecord中间件的指定用户记录信息
  let {recordCountMessage, page} = request;

  let {username, handle} = request.body;  // 获取前台发来的的条件词，用于将此再次赋给前台以进行特定的渲染

  page.list = recordCountMessage;
  let res ={
    'code': 200,
    'msg': '获取消息列表成功',
    page,
    username,
    handle
  };
  response.status(200).send(res);
})

/**
 * 修改消息
 */
adminAPP.post('/update-message', messageMid.uMessage, (request, response, next) => {
  if (request.affectR) {
    let res = {
      'code': 200,
      'msg': '修改消息成功'
    }
    response.status(200).send(res)
  } else {
    let res = {
      'code': 500,
      'msg': '修改消息失败'
    }
    response.status(500).send(res)
  }
})

module.exports = adminAPP;
